﻿<!DOCTYPE HTML>
<!-- saved from url=(0083)http://172.13.19.31:6060/note_html/Java/JavaSE/1004010-JavaSE-面向对象程序设计.html -->
<!DOCTYPE html PUBLIC "" ""><HTML><HEAD><META content="IE=11.0000" 
http-equiv="X-UA-Compatible">
 
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<TITLE>JavaSE-面向对象程序设计</TITLE> <LINK href="JavaSE-面向对象程序设计_files/standalone.css" 
rel="stylesheet"> <LINK href="JavaSE-面向对象程序设计_files/overlay-apple.css" rel="stylesheet"> 
<LINK href="JavaSE-面向对象程序设计_files/article_edit.css" rel="stylesheet"> 
<STYLE type="text/css">
	#content{
		margin: 5px 10px;
	}
</STYLE>
	 <!-- 代码高亮 -->	 <LINK href="JavaSE-面向对象程序设计_files/shCoreEclipse.css" rel="stylesheet">
	 <LINK href="JavaSE-面向对象程序设计_files/my-highlighter.css" rel="stylesheet"> 
<META name="GENERATOR" content="MSHTML 11.00.10586.545"></HEAD> 
<BODY>
<DIV id="content">
<H1 align="center">JavaSE-面向对象程序设计</H1>
<P align="right" 
style="margin: 0px 10px 0px 0px; padding: 0px;">最后修改时间：2016-05-24 11:10:02</P>
<HR style="border-width: 2px; border-color: lime;">

<H3>面向对象程序设计(Object Oriented Programming，OOP；Object Oriented Design, 
OOD)。及其的封装特性</H3>
<H3>面向对象：在面向对象程序设计中有两个重要的概念：类(class)与对象(object)</H3>
<UL>
  <LI><FONT style="color: red;">类</FONT>：类是一种抽象的概念，类中包含了数据(通常使用名词来表示)与对数据的操纵(通  
  常使用动词来表示)。比如说人就是一种抽象的概念，人具有姓名、年龄、身高等数据，  还有吃饭、跑步等操纵数据的动作。   </LI>
  <LI><FONT style="color: red;">对象</FONT>：对象是一种具体的概念，是类的一种具体表示方式。比如说人是一个类，而张三、  
  李四、王五等具体的人就是对象。 对象(Object)又叫做实例(Instance)。生成一个对象的过程又叫做实例化   </LI></UL>
<H3>类所包含的内容，类一共包含两部分内容： </H3>
<UL>
  <LI>a).数据，数据在类中称作<FONT style="color: red;">属性</FONT>(Property 或者 
  Attribute)或者叫成员变量(Member variable).   类中的属性又叫做成员变量(member  variable)，属性用英文表示为 
  property 或者attribute。   </LI>
  <LI>b).对数据的操纵，这种操纵在类中称作<FONT style="color: red;">方法</FONT>(method).   </LI></UL>
<H3>面向对象程序设计的三大基本特征： </H3>
<UL>
  <LI><FONT style="color: red;">继承(Inheritance)</FONT>   
  <UL>
    <LI>继承：java是单继承的，表示一个类只能从另一个类继承(继承的类叫     <FONT 
    style="color: red;">子类</FONT>，被继承的类叫<FONT 
    style="color: red;">父类</FONT>)，java中继承    使用extends关键字     </LI></UL></LI>
  <LI><FONT style="color: red;">封装(Encapsulation)</FONT>   
  <UL>
    <LI>封装：类包含了数据与方法，将数据与方法放在一个类中就构成了封装。     </LI></UL></LI>
  <LI><FONT style="color: red;">多态(Polymorphism)</FONT></LI></UL>
<H3>定义类</H3>
<UL>
  <LI>  定义类：  修饰符  class  类的名字 {  //类的内容(包含了属性与方法)  }   </LI>
  <LI>定义方法：  修饰符  返回类型  方法名称([参数1，  参数 2，  参数3…])  {  //方法体   }   </LI>
  <LI><FONT 
  style="color: red;">一个源文件里有多个类，那么该源文件里最多只能有一个类由public修饰，而且main方法只能放在public类里；  
  如果都不是public类，那么main方法随便放在哪个类   </FONT>   </LI>
  <LI>main方法是整个Java程序的入口点，如果类的定义中没有main方法，则程序无法执行</LI>
  <LI>方法定义不能嵌套，也就说不能在一个方法中定义另外一个方法。方法只能定义在类中</LI>
  <LI>  关于方法的执行：首先需要定义方法，接下来就可以使用方法(调用方法)，当方法调  用完毕后，方法可以返回值。方法到底是否返回值是由方法的定义决定的 
    </LI>
  <LI>  如何生成对象?通过类来生成对象(通常使用 new关键字来生成对象)；<FONT style="color: red;">类名  变量名  = 
  new  类名(); </FONT>   </LI>
  <LI>方法调用需要通过对象来完成，方法调用的形式是：   <FONT style="color: red;">对象变量.方法名([参数值1，  参数值 
  2，  参数值 3….]); </FONT>   </LI>
  <LI><FONT style="color: red;">如果一个类包含了属性与方法，那么该类的每一个对象都具有自己的属性，但无论一个  
  类有多少个对象，这些对象共享同一个方法。(static关键字除外) </FONT>   </LI></UL>
<H3><FONT style="color: red;">关于方法的注意事项： </FONT></H3>
<UL>
  <LI><FONT style="color: red;">在方法定义中，方法的返回类型与 return后面的变量或常量类型保持一致</FONT>。   
  </LI>
  <LI><FONT style="color: red;">在方法调用时，给方法传递的参数需要与方法定义时的参数保持一致   
  (参数个数一致，参数类型一致)。 </FONT>   </LI>
  <LI><FONT style="color: red;">方法定义时的返回类型与接收方法返回值的变量类型保持一致。</FONT>   </LI>
  <LI>public int add(int a, int b) 方法定义时的参数叫做形式参数。   int a = test.add(8, 3); 
  方法调用时所赋予的具体值叫做实际参数。   </LI>
  <LI>关键字void表示方法不返回值</LI>
  <LI>  如果方法不返回值，那么声明方法的时候使用 void 关键字，在方法定义中可以有两种  情况实现不返回值   
  <UL>
    <LI>不使用 return语句</LI>
    <LI>    使用 return，但 return后面没有任何值或者变量，return后面只有一个分号，表示    退出方法，返回到方法的调用端。   
      <FONT style="color: red;">使用方式： return;</FONT>     </LI></UL></LI>
  <LI><FONT style="color: red;">关于方法参数传递的总结：对于 Java 中的方法参数传递，无论传递的是原生数据类型  
  还是引用类型，统一是传值(pass by value)。只是引用类型传的是引用的地址的值</FONT>   </LI></UL>
<H3>定义属性：</H3>
<UL>
  <LI>  属性需要定义在类中，又叫做<FONT style="color: red;">成员变量</FONT>；  而定义在方法中的变量叫<FONT 
  style="color: red;">做局部变量</FONT>。   </LI>
  <LI>局部变量使用前必须要声明并赋初值；成员变量使用前必须要声明，但可以不赋初值。</LI>
  <LI>  属性定义：   public class Person {   修饰符  类型  属性名称;  }   </LI>
  <LI>属性使用：  与方法一样，使用.运算符。首先需要生成类的实例，然后使用实例+"."的方式来使用属性。   </LI></UL>
<H3><FONT style="color: red;">成员变量与局部变量的联系与区别：</FONT></H3>
<UL>
  <LI>无论是成员变量还是局部变量，使用前都需要声明(定义)。 </LI>
  <LI>  对于局部变量来说，使用前必须要初始化；对于成员变量来说，使用前可以不初  始化。如果没有初始化成员变量就开始使用，那么每个类型的成员变量都有一个 
   默认的初始值   
  <UL>
    <LI><FONT style="color: red;">i.  byte、short、int、long类型的初始值为 0</FONT></LI>
    <LI><FONT style="color: red;">ii.  float、double类型的初始值为0.0</FONT></LI>
    <LI><FONT style="color: red;">iii.  char类型的初始值'\u0000'就是空字符</FONT></LI>
    <LI><FONT style="color: red;">iv.  boolean 类型的初始值为 false</FONT> 
</LI></UL></LI></UL>
<H3>构造方法(Constructor)构造方法用于完成对象属性的初始化工作--构造方法的特点：</H3>
<UL>
  <LI>a).构造方法的名字必须与类名完全一致(包含大小写)</LI>
  <LI>b).构造方法没有返回值，连 void也不能出现</LI>
  <LI>c).如果在定义一个类的时候，没有为类声明构造方法，那么 Java 编译器会自动为类  
  添加一个没有参数且方法体为空的构造方法(默认的构造方法)<FONT style="color: red;">所以类中必定至少一个构造方法</FONT>   
  </LI>
  <LI>d).如果在定义一个类的时候，为类声明了构造方法，那么 Java 编译器就不会再为类  添加构造方法了。   </LI>
  <LI><FONT style="color: red;">e).不能显式调用类的构造方法，构造方法通常是通过new关键字隐式调用。</FONT>   
  </LI></UL>
<H3>new关键字：</H3>
<UL>
  <LI>  使用 new来生成对象的时候，后面的小括号()表示构造方法的参数列表，如果构造方法  
  不接收参数，那么小括号中的内容为空；如果构造方法接收参数，那么小括号中的实际  参数就需要与构造方法定义中的形式参数保持一致(参数数量一致、参数类型一致、按 
   照顺序逐一赋值)。   </LI>
  <LI>new关键字在生成对象时完成了三件事情：   
  <UL>
    <LI><FONT style="color: red;">a).为对象开辟内存空间。</FONT> </LI>
    <LI><FONT style="color: red;">b).调用类的构造方法。 </FONT> </LI>
    <LI><FONT style="color: red;">c).将生成的对象的地址(引用)返回。 </FONT> </LI></UL></LI></UL>
<H3>this关键字：</H3>
<UL>
  <LI>this表示当前对象</LI>
  <LI>this通过.点来调用 成员变量或成员方法； 如：this.cName = 
  "";表示给cName这个成员变量赋值，如直接使用this.cName，表示取得成员变量cName的值</LI>
  <LI>this调用构造函数，this(构造函数的参数);</LI>
  <LI>this不能在static修饰的方法中使用</LI></UL>
<HR style="border-width: 2px; border-color: lime;">

<DIV align="center">©copyright 版权所有   作者：zzy</DIV>
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shCore.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushJava.js" type="text/javascript"></SCRIPT>
	
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushJScript.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushXml.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushSql.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushBash.js" type="text/javascript"></SCRIPT>
	
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushVb.js" type="text/javascript"></SCRIPT>
	
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushCss.js" type="text/javascript"></SCRIPT>
	
<SCRIPT src="../../pub/syntaxhighlighter/init.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/js/jquery.tools.min.js" type="text/javascript"></SCRIPT>
 <!-- make all links with the 'rel' attribute open overlays --> 
<SCRIPT>
  $(function() {
      $("#apple img[rel]").overlay({effect: 'apple'});
    });
</SCRIPT>
 </DIV></BODY></HTML>
